I. Field
The present disclosure relates generally to the field of data storage, and more specifically to storage of data across multiple diverse storage systems.
II. Description of the Related Art
Current storage on the Internet generally entails storage of a particular set of data, such as a file, on a single site. Distributed storage reduces costs while increasing productivity with respect to the data. In certain instances, users or computer applications may seek to perform a function involving a file distributed in multiple locations, such as searching the file for information. For example, a file may be distributed in multiple locations and the user may wish to search the file for the term “Tuesday.” Such functionality over distributed data has been difficult or impossible in the past, generally limited to retrieving the file components, combining the file components into the file, and then performing the desired function, such as a text search function, on the retrieved and reconstructed file. Such operations take time and tend to be computationally inefficient.
Coupled with the difficulty of performing functions on distributed file components, security and privacy risks are also problematic in cloud based storage solutions. Conventional cryptography maps a block of data to a block of data based on a secret key, such as AES mapping 128 bits to 128 bits. Given access to the 128 encrypted bits, then compromising the secret key to the data compromises the data, i.e. once the key is lost, all of the data is lost that has been encrypted according to that key. It would be advantageous for security if the encrypted data were split apart and distributed in such a manner that access to any one or possibly several of the parts did not compromise the data even if the secret key was completely compromised.
Also, certain advantages exist with functions that are homomorphic. However, conventional encryption is frequently not homomorphic, and operations on, for example, plaintext data are not possible when such text is in encrypted form. Homomorphic encryption entails performing specific computations on ciphertext (encrypted text) and generating an encrypted result that, when decrypted, matches the results of operations performed on plaintext (unencrypted text, i.e. the original text). Thus, for example, searching can be performed on encrypted data that has been homomorphically encrypted without the need to collect all the encrypted data and decrypt the data. This goes for other operations as well. One drawback to homomorphic encryption is that homomorphic encryption algorithms that do exist tend to be costly, complex, and in certain instances not truly homomorphic.
A computing system configured to distribute portions of files such that all the distributed pieces are not necessary to reconstruct the file would be highly desirable, particularly in instances where some of the distributed pieces may be lost, destroyed or damaged. Thus a computing system configured to distribute portions of files that enables performing data functions on distributed file pieces would be highly desirable, particularly if such files have adequate security, encryption is homomorphic, and the ability to perform functions on the encrypted distributed data is not excessively computationally expensive.